#include <stdio.h>
#define N 10 
/*
 author: maxiao
 date: 2023-04-19 23:28
 description: 通过插入排序进数组进行升序排列
*/

int input_nums(int* arr)
{
    int i = 0;
    while (i<N)
    {
        printf("请输入第%d个整数：", i+1);
        scanf("%d", &arr[i]);
        i++;
    }
    return 0;
}

int show_array(int* arr)
{
    int i = 0;
    for (i=0; i<N; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

int insertion_sort(int* arr)
{
    int i, j;
    // 控制比较的轮数
    for (i=0; i<N-1; i++)
    {
        // 每比较一次，若比前数小，则交换两数位置
        for (j=i+1; j>0; j--)
        {
            if ( arr[j-1] > arr[j] )
            {
                int tmp;
                tmp = arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = tmp;
            }
            else
            {
                break;
            }
        }
        printf("第%d轮排序后的数组为：", i+1);
        show_array(arr);
    }

    return 0;
}

// 主程序入口
int main()
{
    int arr[N] = {0};   
    // 调用用户输入的函数
    input_nums(arr);
    // 显示用户输入的数据
    show_array(arr);
    // 对数组排序
    insertion_sort(arr);
    printf("\n");
    return 0;
}
